import { getId } from "@/utils/nodeUtil";
export const approverNode = {
  id: getId(),
  name: "审批人",
  type: 1,
  // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
  status: -1,
    // 显示内容
    content: null,
  config: {
    // 审批人模式
    assignedType: "ASSIGN_USER",
    // 多人审批方式
    approvalMode: "NEXT",
    nobody: {
      //PASS 直接通过、 TO_ADMIN 转交主管理员、TO_USER 转交指定人员
      handler: "AUTO",
      //TO_USER 时的指定人员
      assignedUser: [],
    },
    reject: {
      //TO_END 驳回直接结束流程、TO_NODE 驳回到指定节点、TO_BEFORE 驳回到上一级
      type: "TO_END",
      target: "", //驳回到指定ID的节点
    },
    //指定主管审批
    leader: {
      level: 1, //发起人指定级别主管
    },
    role: [],
    assignedUser: [],
    //发起人自选
    selfSelect: {
      multiple: true, // 是否多选 true/false
    },
    // 层级模式
    levelMode: 1,
    // 审批人ID
    approverIds: [],
    // 审批人名称
    approverNames: [],
    // 表单权限
    formPerms: [],
    // 高级配置
    configure: {},
    // 显示添加按钮
    addable: true,
    // 可删除提示
    deletable: false,
    // 是否有错误
    error: false,
  },
  // 子节点
  childNode: null,
};

export const ccNode = {
  id: getId(),
  name: "抄送人",
  type: 2,
  // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
  status: -1,
  // 子节点
  childNode: null,
    // 显示内容
    content: null,
  config: {
    // 抄送人设置
    approverGroups: [
      {
        id: getId(),
        // 审批人模式
        approverType: 1,
        // 层级模式
        levelMode: 1,
        // 审批人ID
        approverIds: [],
        // 审批人名称
        approverNames: [],
      },
    ],
    // 表单权限
    formPerms: [],
    // 高级配置
    configure: {},
    // 显示添加按钮
    addable: true,
    // 可删除提示
    deletable: false,
    // 是否有错误
    error: false,
  },
};

export const branchNode = {
  id: getId(),
  name: "条件分支",
  type: 4,
  // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
  status: -1,
  // 子节点
  childNode: null,
  // 显示添加按钮
  addable: true,
  // 条件节点
  branchs: [
    {
      id: getId(),
      pid: getId(),
      name: "分支1",
      type: 3,
      // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
      status: -1,
      // 是否有错误
      error: false,
      // 子节点
      childNode: null,
      props: {
        // 分支类型
        branchType: 1,
        //条件表达式
        expression: "",
        // 优先级
        priorityLevel: 1,
        // 显示优先级
        showPriorityLevel: true,
        // 条件组
        conditionGroup: [],
      },
      // 显示添加按钮
      addable: true,
      // 可删除提示
      deletable: false,
    },
    {
      id: getId(),
      pid: getId(),
      name: "其他情况",
      type: 3,
      // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
      status: -1,
      // 子节点
      childNode: null,
      props: {
        // 条件组
        conditionGroup: [],
        // 分支类型
        branchType: 1,
        //条件表达式
        expression: "",
        // 优先级
        priorityLevel: 2,
        // 显示优先级
        showPriorityLevel: true,
        // 流程基础配置属性
      },
      // 显示添加按钮
      addable: true,
      // 可删除提示
      deletable: false,
      // 是否有错误
      error: false,
      // 显示内容
      content: "其他情况进入此流程",
    },
  ],
};

export const eventNode = {
  id: getId(),
  name: "事件",
  type: 5,
  // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
  status: -1,
  // 子节点
  childNode: null,
  // 显示添加按钮
  addable: true,
  // 可删除提示
  deletable: false,
  // 是否有错误
  error: false,
};

export const suggestNode = {
  id: getId(),
  name: "意见",
  type: 7,
  // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
  status: -1,
  // 子节点
  childNode: null,
  // 显示添加按钮
  addable: true,
  // 是否有错误
  error: false,
  branchs: [
    {
      id: getId(),
      pid: getId(),
      name: "同意",
      type: 8,
      // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
      status: -1,
      // 子节点
      childNode: null,
      props: {
        // 优先级
        priorityLevel: 2,
      },
      // 显示添加按钮
      addable: true,
      // 可删除提示
      deletable: false,
      // 是否有错误
      error: false,
    },
    {
      id: getId(),
      pid: getId(),
      name: "不同意",
      type: 8,
      // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
      status: -1,
      // 子节点
      childNode: null,
      props: {
        // 优先级
        priorityLevel: 2,
      },
      // 显示添加按钮
      addable: true,
      // 可删除提示
      deletable: false,
      // 是否有错误
      error: false,
    },
  ],
};

export const parallelNode = {
  id: getId(),
  name: "并行",
  type: 9,
  // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
  status: -1,
  // 显示添加按钮
  addable: true,
  // 聚合节点
  childNode: {
    id: getId(),
    pid: getId(),
    name: "聚合",
    type: 11,
    status: -1,
    childNode: null,
    // 显示添加按钮
    addable: true,
    // 可删除提示
    deletable: false,
  },
  branchs: [
    {
      id: getId(),
      pid: getId(),
      name: "并行1",
      type: 10,
      // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
      status: -1,
      // 是否有错误
      error: false,
      // 显示内容
      content: "并行任务",
      // 子节点
      childNode: null,
      // 显示添加按钮
      addable: true,
      // 可删除提示
      deletable: false,
      props: {
        // 分支类型
        branchType: 3,
        // 条件组
        conditionGroup: [],
      },
    },
    {
      id: getId(),
      pid: getId(),
      name: "并行2",
      type: 10,
      // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
      status: -1,
      // 是否有错误
      error: false,
      // 显示内容
      content: "并行任务",
      // 子节点
      childNode: null,
      // 显示添加按钮
      addable: true,
      // 可删除提示
      deletable: false,
      props: {
        // 分支类型
        branchType: 3,
        // 条件组
        conditionGroup: [],
      },
    },
  ],
};

export const noticeNode = {
  id: getId(),
  name: "通知",
  type: 20,
  // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
  status: -1,
  // 子节点
  childNode: null,
  props: {
    // 审批设置
    approverGroups: [
      {
        id: getId(),
        // 审批人模式
        approverType: 1,
        // 层级模式
        levelMode: 1,
        // 审批人ID
        approverIds: [],
        // 审批人名称
        approverNames: [],
      },
    ],
  },
  // 显示添加按钮
  addable: true,
  // 可删除提示
  deletable: false,
  // 是否有错误
  error: false,
};

export const writeNode = {
  id: getId(),
  name: "办理",
  type: 30,
  // 流程节点状态(用于只读模式, 0:未进行 1:进行中  2:已完成)
  status: -1,
  // 子节点
  childNode: null,
  props: {
    // 表单权限
    formPerms: [],
  },
  // 显示添加按钮
  addable: true,
  // 可删除提示
  deletable: false,
  // 是否有错误
  error: false,
};

export default {
  approverNode,
  ccNode,
  //branchNode,
  eventNode,
  //suggestNode,
  //parallelNode,
  noticeNode,
};
